/**
 * Created by 86185 in 2020/7/11 on 10:44
 */
class StringUtil {
  constructor() {
  }

  /**
   * 字符串去掉开头和结尾的空格
   * @param str
   * @return {void | string | *}
   */
  strTrim(str = "") {
    return str.replace(/(^\s*)|(\s*$)/g, "")
  }

  /**
   * 字符串去掉开头的空格
   * @param str
   * @return {void | string | *}
   */
  strTrimLeft(str = "") {
    return str.replace(/^\s*/g, "")
  }

  /**
   * 字符串去掉结尾的空格
   * @param str
   * @return {void | string | *}
   */
  strTrimRight(str = "") {
    return str.replace(/\s*$/g, "")
  }

  /**
   * 字符串是否包含某个子串
   * @param str
   * @param target
   * @return {boolean}
   */
  strInclude(str = "", target = "") {
    return str.includes(target)
  }

  /**
   * 字符串是否以某个子串开头
   * @param str
   * @param target
   * @return {boolean}
   */
  strStartWith(str = "", target = "") {
    return str.startsWith(target)
  }

  /**
   * 字符串的某个子串替换为另一个子串
   * @param str
   * @param src
   * @param target
   * @return {void | string | *}
   */
  strReplace(str = "", src = "", target = "") {
    return str.replace(new RegExp(src, "g"), target)
  }

  /**
   * 字符串转换为大写
   * @param str
   * @return {string}
   */
  strUppercase(str = "") {
    return str.toUpperCase()
  }

  /**
   * 字符串转换为小写
   * @param str
   * @return {string}
   */
  strLowercase(str = "") {
    return str.toLowerCase()
  }

  /**
   * 字符串首字母大写
   * @param str
   * @return {string}
   */
  strCapital(str = "") {
    let strTemp = str.toLowerCase();
    return strTemp.charAt(0).toUpperCase() + strTemp.slice(1)
  }

  /**
   * 字符串去除数字之外的字符
   * @param str
   * @returns {*}
   */
  strMatchNum(str) {
    return str.replace(/\D/g, "")
  }

  /**
   * 反转字符串或者单词
   * @param str
   * @param separator
   * @returns {string}
   */
  strReverseBySeparator(str, separator) {
    return str.split(separator).reverse().join(separator)
  }

  /**
   * 判断是否是回文字符串
   * @param str1
   * @param str2
   * @returns {boolean}
   */
  strIsHW(str1, str2) {
    const normalize = str => str.toLowerCase().normalize("NFD").split("").reverse().join("")
    return normalize(str1) === str2
  }

  /**
   * 生成随机字符串
   * randomString(10) // pfkMfjEJ6x
   * randomString(20) // ce6tEx1km4idRNMtym2S
   * @returns {string}
   */
  randomString() {
    let chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz123456789";
    let strLen = chars.length;
    let randomStr = "";
    for (let i = 0; i < len; i++) {
      randomStr += chars.charAt(Math.floor(Math.random() * strLen));
    }
    return randomStr;
  }
}

export default new StringUtil()
